﻿using System;
using System.Collections.Generic;
using System.Xml.Serialization;

/**
 * 
 * \file CarteXaml.xaml.cs
 * \brief Carte Xaml
 * \author Baptiste Villiot - Jonathan Langlais
 * \version 1.0
 * 
 */
namespace Interfaces
{
    /**
   * 
   * \class Joueur
   * \brief Affiche la carte et tous les elements qu'elle peut contenir
   * 
    */
    public interface Joueur : IXmlSerializable
    {
        string NomJoueur
        {
            get;
        }

        /**
         * !< La fabrique d'unite du joueur
         */
        FabriqueUnite fabriqueUnite
        {
            get;
            set;
        }

        /**
         * !< La fabrique d'unite du joueur
         */
        FabriqueObjet fabriqueObjet
        {
            get;
            set;
        }

        /**
         * !< Liste des unites du joueur
         */
        List<Unite> Unite
        {
            get;
            set;
        }

        /**
         * !< Liste des villes du joueur
         */
        List<Ville> ville
        {
            get;
            set;
        }

        bool aPerdu();
        Directeur creerDir(Tuple<int, int> t);
        Enseignant creerEns(Tuple<int, int> t);
        Etudiant creerEtu(Tuple<int, int> t);
        void creerVille(Enseignant ens, int taille);
        Tuple<int, int> getLastPos();
        void setLastPos(Tuple<int, int> t);
        int getCouleur();
        System.Xml.Schema.XmlSchema GetSchema();
        System.Collections.Generic.List<Unite> getUniteVisible();
        System.Collections.Generic.List<Ville> getVilleVisible();
        int nbUnite();
        void ReadXml(System.Xml.XmlReader reader);
        System.Collections.Generic.List<Tuple<int, int>> tableauUnites();
        System.Collections.Generic.List<Tuple<int, int>> unitesEnnemies(int taille);
        System.Collections.Generic.List<Tuple<int, int>> villesEnnemies();
        void WriteXml(System.Xml.XmlWriter writer);
    }
}